package com.spa.modules.gen.entity;

import java.io.Serializable;
import java.util.Date;

import org.springframework.format.annotation.DateTimeFormat;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 字段信息
 * 
 * @author Administrator
 *
 */
@TableName("gen_table_column")
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "字段信息对象", description = "字段信息")
public class GenTableColumn implements Serializable {

    private static final long serialVersionUID = 1L;

    // 唯一标识
    @ApiModelProperty(value = "唯一标识")
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;
    // 唯一标识
    @ApiModelProperty(value = "表id")
    @TableField(value = "table_id")
    private String tableId;

    @ApiModelProperty(value = "列名")
    @TableField(value = "name")
    private String name; // 列名
    @ApiModelProperty(value = "描述")
    @TableField(value = "comments")
    private String comments; // 描述
    @ApiModelProperty(value = "JDBC类型")
    @TableField(value = "jdbc_type")
    private String jdbcType; //
    @ApiModelProperty(value = "是否主键（1：主键）")
    @TableField(value = "is_pk")
    private String isPk; // 是否主键（1：主键）

    @ApiModelProperty(value = "JAVA类型")
    @TableField(value = "java_type")
    private String javaType; // JAVA类型
    @ApiModelProperty(value = "JAVA字段名")
    @TableField(value = "java_field")
    private String javaField; // JAVA字段名

    @ApiModelProperty(value = "字段生成方案（文本框、文本域、下拉框、复选框、单选框、字典选择、人员选择、部门选择、区域选择）")
    @TableField(value = "show_type")
    private String showType; // 字段生成方案（文本框、文本域、下拉框、复选框、单选框、字典选择、人员选择、部门选择、区域选择）
    @ApiModelProperty(value = "字典类型")
    @TableField(value = "dict_type")
    private String dictType; // 字典类型
    @ApiModelProperty(value = "排序（升序）")
    @TableField(value = "sort")
    private Integer sort; // 排序（升序）

    // 状态
    @ApiModelProperty(value = "状态")
    @TableField(value = "status")
    private String status;
    // 创建人
    @ApiModelProperty(value = "创建人")
    @TableField(value = "create_by", fill = FieldFill.INSERT)
    private String createBy;
    /** 创建时间 */
    @ApiModelProperty(value = "创建时间")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    // 更新人
    @ApiModelProperty(value = "更新人")
    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
    private String updateBy;
    /** 更新时间 */
    @ApiModelProperty(value = "更新时间")
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
}
